// Função para carregar as máscaras
function carregar_mascaras() {
	/* 
	Mascaras ja definidas:
		mask-pint: /[\d]/
		mask-int: /[\d\-]/
		mask-pnum: /[\d\.]/
		mask-num: /[\d\-\.]/
		mask-hex: /[0-9a-f]/i
		mask-email: /[a-z0-9_\.\-@]/i
		mask-alpha: /[a-z_]/i
		mask-alphanum: /[a-z0-9_]/i
	*/

	var tags = $('input[class*=mask],textarea[class*=mask]');
	for (var key in $.fn.keyfilter.defaults.masks)
	{
		tags.filter('.mask-' + key).keyfilter($.fn.keyfilter.defaults.masks[key]);
	}
}

// Função para validar uma data
function valida_data(cData) {
        var data = cData; 
        var tam = data.length;
        if (tam != 10) {
			return false;
		}

        var dia = data.substr(0,2)
        var mes = data.substr (3,2)
        var ano = data.substr (6,4)     

		if (ano > 2010) {
		  return false;
        }

        switch (mes) {
  case '01':
         if  (dia <= 31) 
    return (true);
         break;
  case '02':
         if  (dia <= 29) 
    return (true);
         break;
  case '03':
         if  (dia <= 31) 
    return (true);
         break;
  case '04':
         if  (dia <= 30) 
    return (true);
         break;
  case '05':
         if  (dia <= 31) 
    return (true);
         break;
  case '06':
         if  (dia <= 30) 
    return (true);
         break;
  case '07':
         if  (dia <= 31) 
    return (true);
         break;
  case '08':
         if  (dia <= 31) 
    return (true);
         break;
  case '09':
         if  (dia <= 30) 
    return (true);
         break;
  case '10':
         if  (dia <= 31) 
    return (true);
         break;
  case '11':
         if  (dia <= 30) 
    return (true);
         break;
  case '12':
         if  (dia <= 31) 
    return (true);
         break;
        }
        {
  return false;
        }
        return true;
}

// Valida campos data
function validate_datas() {
	var fields = "";
	var ret = true;

	$(".date").each(function(){
			if ( ! valida_data($(this).val()) ) {
				fields += $(this).attr("name").strip().gsub(/_/, " ").capitalize() + "<br/>";
				ret = false;
			}
	});

	if (!ret) {
		show_dialog("Campo de data inválido: <br/>" + fields);
	}

	return ret;
}

// Checando pelos campos de e-mail
function validate_email() {
	var pattern = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	var ret = true;
	var field;
	
	$(".validate_email").each(function() {
		field = $(this).val();

		if ( ( !pattern.test( field ) ) && ( ! field.blank() ) ) {

			show_dialog("Verifique os campos de e-mail. Eles devem ser válidos.");
			ret = false;

		}

	});

	return ret;

}


// Checando por campos requeridos
function validate_required() {
	
	var required_empty = false;
	var fields = "";

	$(".required[name]").each(function(){

		if ( ($(this).val() == "") || ($(this).val() == null) ) {

			required_empty = true;
			$(this).css("border", "1px solid red");	
			try {
				fields += $(this).attr("name").strip().gsub("_", " ").capitalize() + "<br/>";
			} catch (e) {
			}

		} else {

			$(this).css("border", "1px solid gray");

		}
	});

	if (required_empty) {
		
		show_dialog("Há campos requeridos sem preenchimento: <br/>" + 
							  fields);

		return false;

	}

	return true;

}


// Validate
function validate() {
	return (validate_required() && validate_datas() && validate_email());
}
